<?php
/*namespace para individualizar a classe*/
namespace bibliotecas\componentes\banco\abstracao

{
/*declarando o use para PDO, evita de chamar autoload para o PDO, pois o PDO é pré-compilado*/
use \PDO as PDO;
/*declara classe banco conexão como abstrata na qual não pode ser instanciada*/
abstract class objBancoConexao

{
/*metodo de conexao*/
protected function mtdBancoConexao()

{
/*verifica se o drive esta disponivel para conexao*/
if (in_array($this->proBanco['parBdTipo'], PDO::getAvailableDrivers()))

{
/*DSN de conexao, contem tipo, nome e servidor da base, faz uma pequena consulta se for banco de usuario e senha*/
$parDados['bc1'] = empty($this->proBanco['parBdNome']) ? $this->proBanco['parBdTipo'].':'.$this->proBanco['parBdServidor'] : $this->proBanco['parBdTipo'].':dbname='.$this->proBanco['parBdNome'].';host='.$this->proBanco['parBdServidor'].';port='.$this->proBanco['parBdPorta'];
/*efetua a conexao*/
return new PDO($parDados['bc1'], $this->proBanco['parBdUsuario'], $this->proBanco['parBdSenha']);

}

else

{
/*retorna erro com o array de drives disponiveis para PDO*/
return $this->mtdErros(array('mtdBancoConexao' => array('drive nao encontrado' => PDO::getAvailableDrivers())));

}

}

}

}

?>